UNPKG

@gorgo/medusa-feed-yandex

Version:

A Medusa plugin that generates a product feed in YML (Yandex Market Language) format

51 lines 4.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = void 0; const utils_1 = require("@medusajs/framework/utils"); const zlib_1 = require("zlib"); const util_1 = require("util"); const FILE_EXTENSION = ".xml"; const GET = async (req, res) => { try { const { id, fileName } = req.params; const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY); const fileModuleService = req.scope.resolve(utils_1.Modules.FILE); const { data } = await query.graph({ entity: "feed", filters: { id }, fields: ["file_path", "file_name"], }); const feed = data?.[0]; if (!feed) { return res.status(404).json({ message: "Feed not found" }); } const { file_path: filePath, file_name: expectedFileName } = feed; if (!filePath || !expectedFileName) { return res.status(404).json({ message: "Feed file info missing" }); } const expectedFileNameWithExt = expectedFileName + FILE_EXTENSION; if (expectedFileNameWithExt !== fileName) { return res.status(404).json({ message: "File name does not match" }); } let fileId; try { const url = new URL(filePath); fileId = url.pathname.split("/").pop(); } catch { return res.status(400).json({ message: "Invalid file path format" }); } const encoded = decodeURIComponent(fileId); const base64Buffer = await fileModuleService.getAsBuffer(encoded); const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip); const xmlBuffer = await gunzipAsync(base64Buffer); res.setHeader("Content-Type", "application/xml"); res.setHeader("Content-Disposition", `inline; filename="${fileName}"`); res.send(xmlBuffer); } catch (err) { return res.status(500).json({ message: "Internal server error" }); } }; exports.GET = GET; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL1tpZF0vW2ZpbGVOYW1lXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBOEU7QUFDOUUsK0JBQTZCO0FBQzdCLCtCQUFnQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUE7QUFFdEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtRQUNuQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV6RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2YsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztTQUNuQyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV0QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUM1RCxDQUFDO1FBRUQsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFBO1FBRWpFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtRQUNqRSxJQUFJLHVCQUF1QixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFBO1FBQ3RFLENBQUM7UUFFRCxJQUFJLE1BQWMsQ0FBQTtRQUNsQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUM3QixNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUE7UUFDekMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFBO1FBQ3RFLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMxQyxNQUFNLFlBQVksR0FBRyxNQUFNLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFBLGdCQUFTLEVBQUMsYUFBTSxDQUFDLENBQUE7UUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFakQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUNoRCxHQUFHLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixRQUFRLEdBQUcsQ0FBQyxDQUFBO1FBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFckIsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBaERZLFFBQUEsR0FBRyxPQWdEZiJ9